

https://leetcode.cn/problems/surrounded-regions/description/
//class Solution
//{
//    int m, n;
//    int dx[4] = { 0,-1,1,0 };
//    int dy[4] = { -1,0,0,1 };
//
//public:
//    void solve(vector<vector<char>>& board)
//    {
//        m = board.size(), n = board[0].size();
//        for (int i = 0; i < n; i++)
//        {
//            if (board[0][i] == 'O') bfs(board, 0, i);
//            if (board[m - 1][i] == 'O') bfs(board, m - 1, i);
//        }
//
//        for (int i = 0; i < m; i++)
//        {
//            if (board[i][0] == 'O') bfs(board, i, 0);
//            if (board[i][n - 1] == 'O') bfs(board, i, n - 1);;
//        }
//
//        for (int i = 0; i < m; i++)
//        {
//            for (int j = 0; j < n; j++)
//            {
//                if (board[i][j] == 'O')
//                {
//                    board[i][j] = 'X';
//                }
//                else if (board[i][j] == '.')
//                {
//                    board[i][j] = 'O';
//                }
//            }
//        }
//        return;
//    }
//
//    void bfs(vector<vector<char>>& board, int i, int j)
//    {
//        queue<pair<int, int>> q;
//        q.push({ i,j });
//        board[i][j] = '.';
//
//        while (q.size()) {
//            auto [a, b] = q.front();
//            q.pop();
//            for (int k = 0; k < 4; k++)
//            {
//                int x = a + dx[k];
//                int y = b + dy[k];
//                if (x >= 0 && x < m && y >= 0 && y < n && board[x][y] == 'O')
//                {
//                    q.push({ x,y });
//                    board[x][y] = '.';
//                }
//            }
//        }
//    }
//};

https://leetcode.cn/problems/ZL6zAn/description/
//class Solution {
//public:
//    int dx[4] = { 0,0,1,-1 };
//    int dy[4] = { 1,-1,0,0 };
//    bool vis[51][51];
//    int m, n;
//    int sum = 0;
//    int maxAreaOfIsland(vector<vector<int>>& grid) {
//        int max1 = 0;
//        m = grid.size(), n = grid[0].size();
//
//        for (int i = 0; i < m; i++) {
//            for (int j = 0; j < n; j++) {
//                if (!vis[i][j] && grid[i][j] == 1) {
//                    vis[i][j] = true;
//                    sum = 1;
//                    bfs(grid, i, j);
//                    if (sum > max1) {
//                        max1 = sum;
//                    }
//                }
//            }
//        }
//        return max1;
//
//    }
//
//    void bfs(vector<vector<int>>& grid, int x, int y) {
//
//        for (int k = 0; k < 4; k++) {
//            int i = x + dx[k];
//            int j = y + dy[k];
//
//            if (i >= 0 && i < m && j >= 0 && j < n && !vis[i][j] && grid[i][j] == 1) {
//                vis[i][j] = true;
//                sum++;
//                bfs(grid, i, j);
//            }
//        }
//    }
//};